package com.bbx.taxi.client.Util;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * 获取汉字的拼音
 */
public class Cn2Spell {
	private static Cn2Spell mcn2Spell;
    public static Cn2Spell getInstance(){
    	if(mcn2Spell==null){
    		mcn2Spell=new Cn2Spell();
    	}
    	else{
    		return mcn2Spell;
    	}
    	return mcn2Spell;
    	
    }

    /**
     * @param chinese
     * @return
     * 汉字转换位汉语拼音首字母,如 厦门  ->XM
     */
    public  String onCn2Spell(String chinese) {
        StringBuffer pybf = new StringBuffer();  
        char[] arr = chinese.toCharArray();  
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
        for (int i = 0; i < arr.length; i++) {  
            if (arr[i] > 128) {  
                try {  
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);  
                } catch (BadHanyuPinyinOutputFormatCombination e) {  
                    e.printStackTrace();  
                }  
            } else {  
                pybf.append(arr[i]);  
            }  
        }  
        return pybf.toString();  
    }
    /**
     * 汉字转换位汉语拼音，英文字符不变
     * @param chines 汉字
     * @return 拼音
     */
    public static String converterToSpell(String chines){
               String pinyinName = "";
                char[] nameChar = chines.toCharArray();
                HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
                defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
                defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
                for (int i = 0; i < nameChar.length; i++) {
                        if (nameChar[i] > 128) {
                                try {
                                        pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];
                                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                                        e.printStackTrace();
                                    }
                            }else{
                                pinyinName += nameChar[i];
                            }
                    }
                return pinyinName;
            }
}
